#ifndef ________MOTOR_CONFIG_H________
#define ________MOTOR_CONFIG_H________

#include <stdint.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif // __cplusplus

typedef enum motor_ctrl_e{
	Motor_Ctrl_COM	=	0,               //通信控制方式
	Motor_Ctrl_SIN	=	1,               //正弦控制方式
	Motor_Ctrl_FOC	=	2,               //FOC控制方式
}MotorCtrlType_e;

typedef enum motor_mode_e{
	Motor_FOC_Mode_OPEN		=	0,               // 开环控制模式
	Motor_FOC_Mode_Voltage	=	1,               // 电压控制模式
	Motor_FOC_Mode_Speed	=	2,               // 速度控制模式
	Motor_FOC_Mode_Torque	=	3,               // 扭矩控制模式
}MotorModeType_e;

typedef enum motor_diagnostics_e{
	Motor_Diag_Disable		=	0,               //禁止诊断
	Motor_Diag_Enable		=	1,               //允许诊断
}MotorDiagnosticsType_e;


#define Motor_Rpm_Limit_Max			1000		//电机最大转速 单位rpm
#define I_DC_MAX        17              // [A] Maximum stage2 DC Link current limit for Commutation and Sinusoidal types (This is the final current protection. Above this value, current chopping is applied. To avoid this make sure that I_DC_MAX = I_MOT_MAX + 2A)

#define BAT_OVERVOLTAGE_THRESHOLD 6000  // 60V（假设值，需要根据实际调整）
#define BAT_UNDERVOLTAGE_THRESHOLD 4000 // 40V（假设值）
#define TEMP_OVERTEMP_THRESHOLD 800     // 80°C（假设值）
#define MOTOR_TEMPERATURE_VARIANCE    100    // 温度差异限制 (0.1°C)
#define MOTOR_DRV_TEMPERATURE_LIMIT   800    // 驱动板温度限制 (0.1°C)
#define MOTOR_DRV_CURR_LIMIT         15000   // 驱动板电流限制 (mA)


#define USE_SERIAL_PORT_PROTOCOL		1
#define USE_CAN_PORT_PROTOCOL			2
#define USE_ETHERNET_PORT_PROTOCOL		3

#define USE_PROTOCOL_TYPE 				USE_SERIAL_PORT_PROTOCOL

#ifdef __cplusplus
}
#endif // __cplusplus

#endif // !________MOTOR_CONFIG_H________